package com.berchen.offer;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 定义栈的数据结构，请在该类型中实现一个能够得到栈中所含最小元素的 min 函数，输入操作时保证 pop、top 和 min 函数操作时，栈中一定有元素。
 * <p>
 * 此栈包含的方法有：
 * push(value):将value压入栈中
 * pop():弹出栈顶元素
 * top():获取栈顶元素
 * min():获取栈中最小元素
 */
public class Test16 {
    List<Integer> list = new ArrayList<>();


    public void push(int node) {

        list.add(node);
    }

    public void pop() {

        list.remove(list.size() - 1);
    }

    public int top() {
        return list.get(list.size() - 1);
    }

    public int min() {
        List<Integer> temp = new ArrayList<>();
        temp.addAll(list);
        Collections.sort(temp);
        return temp.get(0);

    }

    public static void main(String[] args) {
        Test16 test16 = new Test16();
        test16.push(1);
        test16.push(2);
        test16.push(3);
        test16.push(4);
        System.out.println(test16.min());
    }
}
